//
// Created by 廖海龙 on 2025/4/8.
//

#ifndef HELLOVIDEOCACHE_HELLOSERVERHELPER_HPP
#define HELLOVIDEOCACHE_HELLOSERVERHELPER_HPP

#include <cerrno>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <cstring>
#include <cstring>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <thread>

// 《深入理解计算机系统》中的网络编程示例代码
#include "CSApp.hpp"

/**
 * Author: liaohailong
 * Date: 2025/4/8
 * Time: 16:28
 * Description: 服务器辅助类
 **/
namespace HelloServerHelper {
    /**
     * 获取当前空闲可用的端口号
     * @param from 端口号尝试的开始
     * @param to 端口号尝试的结束
     * @return -1 表示失败, >0 表示成功,返回的就是端口号
     */
    int getFreePort(int from, int to);

    /**
     * @param fd 给句柄设置成非阻塞IO
     * @return true表示成功
     */
    bool setNonBlock(int fd);

    void releaseThread(std::thread **thread);

}

#endif //HELLOVIDEOCACHE_HELLOSERVERHELPER_HPP
